第13章 実践的なPythonアプリケーションの開発
lgtmコマンドを実装
LGTM画像を作る
ローカル、リモート(URL)、キーワード検索
依存関係
requests
Click
Pillow
Git(バージョン管理)
テストコードも書く
TDDではないが、まさしく「実践的」
CircleCI
echoする実装をまず作り、CIを整えてからアプリケーション開発へ
IMO:GitHub Actionsだと試しやすいのでは
code:何もしないcore.py
import click
@click.command()
def cli(): # IMO: CLIは詳細だから、ここをmain.pyに置きたい
lgtm()
click.echo("lgtm") # CLIとして動かせることの確認
def lgtm(): # ロジックが追加される
pass
code:引数を受け取れるcore.py
@click.command()
@click.option("--message", "-m", degault="LGTM", show_default=True, help="...")
@click.argument("keyword") # ファイルパス、URL、画像検索キーワードに対応
def cli(keyword, message):
lgtm(keyword, message) # 引き続き何もしない
click.echo("lgtm")
setup.pyにて"lgtm=lgtm.core:cli"と設定するのでCLIになる
entry_points > console_scripts
画像の取得の実装が参考になる
ライブラリのユーザはImageSource関数を呼び出すだけ
関数だが、クラスのように見せる命名
LocalImage
RemoteImage
KeywordImage
KeywordImage = _LoremFlickr(別名で参照するだけ)
将来LoremFlickrから別の画像検索サービスへの移行が必要になったとしても、内部のクラスを差し替えるだけで済むため、保守性が向上します。(Kindle の位置No.6233-6234)
LGTMと書く処理は結構泥臭い印象(TODO)